;;; GNU Guix --- Functional package management for GNU
;;;
;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
;;; Copyright © 2022 (unwox <me@unwox.com>
;;;
;;; This file is not part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (guixrus packages vim)
  #:use-module (guix build-system copy)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (gnu packages vim))

(define-public neovim-mini
  (let ((commit "14960b8c392fba3b6b53ec05ee379f5d8ea62156")
        (revision "1"))
    (package
      (name "neovim-mini")
      (version (git-version "0.0.0" revision commit))
      (source
       (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/echasnovski/mini.nvim")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
         (base32 "0fgiacic4hdrr2rg3jcjii9afcw8g575fm3sqsp6qkd4bd4gzia8"))))
      (build-system copy-build-system)
      (arguments
       `(#:install-plan
         '(("colors" "share/nvim/site/pack/guix/start/mini/")
           ("doc" "share/nvim/site/pack/guix/start/mini/")
           ("lua" "share/nvim/site/pack/guix/start/mini/"))))
      (home-page "https://github.com/echasnovski/mini.nvim")
      (synopsis "A set of small, self contained addons for Neovim")
      (description "mini is a collection of small, high quality Neovim modules written in Lua.")
      (license license:expat))))

(define-public vim-gas
  (let ((commit "2ca95211b465be8e2871a62ee12f16e01e64bd98")
        (revision "0"))
    (package
      (name "vim-gas")
      (version (git-version "0.16" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://github.com/Shirk/vim-gas")
                 (commit commit)))
          (file-name (git-file-name name version))
          (sha256
            (base32 "1lc75g9spww221n64pjxwmill5rw5vix21nh0lhlaq1rl2y89vd6"))))
      (build-system copy-build-system)
      (arguments
       `(#:install-plan
         '(("syntax" "share/vim/vimfiles/"))))
      (home-page "https://github.com/Shirk/vim-gas")
      (synopsis "GNU Assembler syntax files for Vim")
      (description "This Vim plugin provides syntax highlighting and indentation support for
the GNU Assembler (@code{gas}.)")
      (license license:bsd-3))))

(define-public vim-gas-for-neovim
  (package/inherit vim-gas
    (name "vim-gas-for-neovim")
    (arguments
     `(#:install-plan
       '(("syntax" "share/nvim/site/pack/guix/start/gas/"))))))

(define-public vim-riscv
  (let ((commit "887f1def18e6b7f09ca9be31ec3ac27da9d1ac37")
        (revision "0"))
    (package
     (name "vim-riscv")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/kylelaker/riscv.vim")
             (commit commit)))
       (sha256
        (base32 "0f1z2c71qjjj14kwkjilw3qlmsm5qhvrjfcgdy8ax7qs8kd53gaq"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("ftdetect" "share/vim/vimfiles/")
          ("syntax" "share/vim/vimfiles/"))))
     (home-page "https://github.com/kylelaker/riscv.vim")
     (synopsis "RISC-V syntax highlighting for Vim")
     (description "This package provides RISC-V assembly syntax highlighting for the
Vim text editor.")
     (license license:expat))))

(define-public vim-riscv-for-neovim
  (package/inherit vim-riscv
   (name "vim-riscv-for-neovim")
   (arguments
    `(#:install-plan
      '(("ftdetect" "share/nvim/site/pack/guix/start/riscv/")
        ("syntax" "share/nvim/site/pack/guix/start/riscv/"))))))

(define-public vim-editorconfig-for-neovim
  (package/inherit editorconfig-vim
   (name "vim-editorconfig-for-neovim")
   (arguments
    `(#:install-plan
      '(("autoload" "share/nvim/site/pack/guix/start/editorconfig/")
        ("doc" "share/nvim/site/pack/guix/start/editorconfig/")
        ("plugin" "share/nvim/site/pack/guix/start/editorconfig/"))))))

(define-public vim-bats
  (let ((commit "3e64c95d7a55feb33492717d101c9eb92a8d0a9a")
        (revision "0"))
    (package
     (name "vim-bats")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/rosstimson/bats.vim")
             (commit commit)))
       (sha256
        (base32 "1laz1jx754h1lvz9h50qassyxw78kd1ah6v66dxnrxdv5b7z31d0"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("after" "share/vim/vimfiles/")
          ("ftdetect" "share/vim/vimfiles/"))))
     (home-page "https://github.com/rosstimson/bats.vim")
     (synopsis "Vim support for the Bats testing framework")
     (description "This Vim plugin extends the built-in `sh.vim` to support the Bats
(Bash Automated Testing Framework) testing framework's syntax.")
     (license license:expat))))

(define-public vim-bats-for-neovim
  (package/inherit vim-bats
   (name "vim-bats-for-neovim")
   (arguments
    `(#:install-plan
      '(("after" "share/nvim/site/pack/guix/start/bats/")
        ("ftdetect" "share/nvim/site/pack/guix/start/bats/"))))))

(define-public vim-hare
  (let ((commit "22e2b66129c6c65025274159dc975d3ca865d57b")
        (revision "0"))
    (package
      (name "vim-hare")
      (version (git-version "0.0.0" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://git.sr.ht/~sircmpwn/hare.vim")
                 (commit commit)))
          (sha256
            (base32
              "11df3ch5smdgbkgafz3w3bpq5ddlb9pwwll3kwyqyspwa5vp30qd"))))
      (build-system copy-build-system)
      (arguments
        `(#:install-plan
          '(("compiler" "share/vim/vimfiles/")
            ("ftdetect" "share/vim/vimfiles/")
            ("ftplugin" "share/vim/vimfiles/")
            ("indent" "share/vim/vimfiles/")
            ("syntax" "share/vim/vimfiles/"))))
      (home-page "https://sr.ht/~sircmpwn/hare.vim")
      (synopsis "Vim support for Hare")
      (description "This package provides syntax highlighting and indentation in Vim
for the Hare programming language.")
      (license license:vim))))

(define-public vim-hare-for-neovim
  (package/inherit vim-hare
    (name "vim-hare-for-neovim")
    (arguments
      `(#:install-plan
        '(("compiler" "share/nvim/site/pack/guix/start/hare/")
          ("ftdetect" "share/nvim/site/pack/guix/start/hare/")
          ("ftplugin" "share/nvim/site/pack/guix/start/hare/")
          ("indent" "share/nvim/site/pack/guix/start/hare/")
          ("syntax" "share/nvim/site/pack/guix/start/hare/"))))))

(define-public neovim-luasnip
  (let ((commit "6b67cb12747225a6412d8263bb97d6d2b8d9366a")
        (revision "1"))
    (package
     (name "neovim-luasnip")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/L3MON4D3/LuaSnip")
             (commit commit)))
       (sha256
        (base32 "08a1kk8z3mcq65dh0hi44188dxkqjfg3yilr8viamyni1kwy7gf3"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("doc" "share/nvim/site/pack/guix/start/markdown/")
          ("ftdetect" "share/nvim/site/pack/guix/start/markdown/")
          ("ftplugin" "share/nvim/site/pack/guix/start/markdown/")
          ("lua" "share/nvim/site/pack/guix/start/markdown/")
          ("plugin" "share/nvim/site/pack/guix/start/markdown/")
          ("syntax" "share/nvim/site/pack/guix/start/markdown/"))))
     (home-page "https://github.com/L3MON4D3/LuaSnip")
     (synopsis "A snippets plugin for Neovim written in Lua")
     (description "This Neovim plugin provides a code snippet engine written in Lua.")
     (license license:asl2.0))))

(define-public neovim-cmp
  (let ((commit "b5433f901ebffc9e01b82ae13da9a92d49569205")
        (revision "1"))
    (package
     (name "neovim-cmp")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/hrsh7th/nvim-cmp")
             (commit commit)))
       (sha256
        (base32 "03m369gqyz2yrnspvp3w5q93hd09hfdg9dv8748yqh0bb30lrk49"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("autoload" "share/nvim/site/pack/guix/start/cmp/")
          ("doc" "share/nvim/site/pack/guix/start/cmp/")
          ("lua" "share/nvim/site/pack/guix/start/cmp/")
          ("plugin" "share/nvim/site/pack/guix/start/cmp/"))))
     (home-page "https://github.com/hrsh7th/nvim-cmp")
     (synopsis "Autocompletion for Neovim")
     (description "A completion engine for neovim written in Lua. Completion
sources are installed from external repositories and 'sourced'.")
     (license license:expat))))

(define-public neovim-cmp-lsp
  (let ((commit "ebdfc204afb87f15ce3d3d3f5df0b8181443b5ba")
        (revision "0"))
    (package
     (name "neovim-cmp-lsp")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/hrsh7th/cmp-nvim-lsp")
             (commit commit)))
       (sha256
        (base32 "0kmaxxdxlp1s5w36khnw0sdrbv1lr3p5n9r90h6h7wv842n4mnca"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("after" "share/nvim/site/pack/guix/start/cmp-lsp/")
          ("lua" "share/nvim/site/pack/guix/start/cmp-lsp/"))))
     (home-page "https://github.com/hrsh7th/cmp-nvim-lsp")
     (synopsis "LSP source for @code{neovim-cmp}")
     (description "This plugin provides an LSP backend for the Neovim @code{cmp} plugin.")
     (license license:expat))))

(define-public neovim-cmp-luasnip
  (let ((commit "b10829736542e7cc9291e60bab134df1273165c9")
        (revision "1"))
    (package
     (name "neovim-cmp-luasnip")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/saadparwaiz1/cmp_luasnip")
             (commit commit)))
       (sha256
        (base32 "1qygdas99m7py98rqxyza88lmk2as8yi9khjac603x6anxmq766l"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("after" "share/nvim/site/pack/guix/start/cmp-luasnip/")
          ("lua" "share/nvim/site/pack/guix/start/cmp-luasnip/"))))
     (propagated-inputs (list neovim-cmp neovim-luasnip))
     (home-page "https://github.com/saadparwaiz1/cmp_luasnip")
     (synopsis "Luasnip source for neovim-cmp")
     (description "This Neovim plugin adds a LuaSnip source for the cmp completion engine.")
     (license license:asl2.0))))

(define-public vim-markdown
  (let ((commit "c031a3e65c50d6aa0bfc81f8be9d248f9644426d")
        (revision "1"))
    (package
     (name "vim-markdown")
     (version (git-version "2.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/preservim/vim-markdown")
             (commit commit)))
       (sha256
        (base32 "0l8ginadb4jxnrggd1lvia8kan397x02jf3v6sgkcyxawwpgfl0x"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("after" "share/vim/vimfiles/")
          ("doc" "share/vim/vimfiles/")
          ("ftdetect" "share/vim/vimfiles/")
          ("ftplugin" "share/vim/vimfiles/")
          ("indent" "share/vim/vimfiles/")
          ("syntax" "share/vim/vimfiles/"))))
     (home-page "https://github.com/preservim/vim-markdown")
     (synopsis "Better Markdown support for Vim")
     (description "This Vim plugin provides better syntax highlighting, indentation, and
interactions (folding, concealing, keymaps, etc.) for editing Markdown.")
     (license license:expat))))

(define-public vim-markdown-for-neovim
  (package/inherit vim-markdown
   (name "vim-markdown-for-neovim")
   (arguments
    `(#:install-plan
      '(("after" "share/nvim/site/pack/guix/start/markdown/")
        ("doc" "share/nvim/site/pack/guix/start/markdown/")
        ("ftdetect" "share/nvim/site/pack/guix/start/markdown/")
        ("ftplugin" "share/nvim/site/pack/guix/start/markdown/")
        ("indent" "share/nvim/site/pack/guix/start/markdown/")
        ("syntax" "share/nvim/site/pack/guix/start/markdown/"))))))

(define-public vim-janet
  (let ((commit "294538bab12a56129b8c8433ef7d23b18d05f2e9")
        (revision "0"))
    (package
     (name "vim-janet")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/janet-lang/janet.vim")
             (commit commit)))
       (sha256
        (base32 "1x81n4sdxza5hx3fg2pnzkj4f1sv87i7spldg8rsqpglx7da4clx"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("ftdetect" "share/vim/vimfiles/")
          ("ftplugin" "share/vim/vimfiles/")
          ("indent" "share/vim/vimfiles/")
          ("syntax" "share/vim/vimfiles/"))))
     (home-page "https://github.com/janet-lang/janet.vim")
     (synopsis "Vim syntax files for Janet")
     (description "Vim syntax files for the Janet programming language.")
     (license license:expat))))

(define-public vim-janet-for-neovim
  (package/inherit vim-janet
   (name "vim-janet-for-neovim")
   (arguments
    `(#:install-plan
      '(("ftdetect" "share/nvim/site/pack/guix/start/janet/")
        ("ftplugin" "share/nvim/site/pack/guix/start/janet/")
        ("indent" "share/nvim/site/pack/guix/start/janet/")
        ("syntax" "share/nvim/site/pack/guix/start/janet/"))))))

(define-public vim-solarized8
  (let ((commit "0760564a5147378cf779ef71ba9aee90aff5f43d")
        (revision "0"))
    (package
      (name "vim-solarized8")
      (version (git-version "1.4.0" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://github.com/lifepillar/vim-solarized8")
                 (commit commit)))
          (sha256
            (base32 "0rmn98cmwrs00h2dnk8yxyf457gjz71mjj84d9rnhgxjswgxvm99"))))
      (build-system copy-build-system)
      (arguments
        `(#:install-plan
          '(("colors" "share/vim/vimfiles/")
            ("doc" "share/vim/vimfiles/"))))
      (home-page "https://github.com/lifepillar/solarized8")
      (synopsis "Optimized Solarized colorschemes for Vim")
      (description "Solarized8 contains optimized Solarized colorschemes for Vim. Best served with
                   true-color terminals.")
          (license license:expat))))

(define-public vim-solarized8-for-neovim
  (package/inherit vim-solarized8
   (name "vim-solarized8-for-neovim")
   (arguments
    `(#:install-plan
      '(("colors" "share/nvim/site/pack/guix/start/solarized8/")
        ("doc" "share/nvim/site/pack/guix/start/solarized8/"))))))

;; TODO: Latest version requires `neovim@0.7`.
(define-public neovim-lspconfig
  (package
   (name "neovim-lspconfig")
   (version "0.1.2")
   (source
    (origin
     (method git-fetch)
     (uri (git-reference
           (url "https://github.com/neovim/nvim-lspconfig")
           (commit (string-append "v" version))))
     (sha256
      (base32 "1i1yjk939pxfk9dpv4rh229srx02yxklzwk051a9qprq3hjhwl6v"))))
   (build-system copy-build-system)
   (arguments
    `(#:install-plan
      '(("doc" "share/nvim/site/pack/guix/start/lspconfig/")
        ("lua" "share/nvim/site/pack/guix/start/lspconfig/")
        ("plugin" "share/nvim/site/pack/guix/start/lspconfig/"))))
   (home-page "https;//github.com/neovim/nvim-lspconfig")
   (synopsis "Default language server configurations for Neovim")
   (description "This Neovim package provides the canonical configurations for the Neovim builtin LSP
client.")
   (license license:asl2.0)))

(define-public neovim-lspsaga
  (let ((commit "5309d75bd90ce5b1708331df3af1e971fa83a2b9")
        (revision "1"))
    (package
     (name "neovim-lspsaga")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/tami5/lspsaga.nvim")
             (commit commit)))
     (sha256
      (base32 "0xvlpjv69wf18nw5hbmmgbhs8ws4gfq5ny2vrncqaxcikr3gdmms"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("lua" "share/nvim/site/pack/guix/start/lspsaga/")
          ("plugin" "share/nvim/site/pack/guix/start/lspsaga/"))))
     (home-page "https://github.com/tami5/lspsaga.nvim")
     (synopsis "A UI for Neovim LSP")
     (description "LSPSaga provides a client UI for the Neovim language server protocol client.")
     (license license:expat))))

(define-public neovim-autopairs
  (let ((commit "38d486a1c47ae2722a78cf569008de0a64f4b153")
        (revision "1"))
    (package
     (name "neovim-autopairs")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/windwp/nvim-autopairs")
             (commit commit)))
       (sha256
        (base32 "0qka37c8ikcqvbjq0n0kxgm8l30jy3aixs5i00a25wcwxj40kzxv"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("doc" "share/nvim/site/pack/guix/start/autopairs/")
          ("lua" "share/nvim/site/pack/guix/start/autopairs/"))))
     (home-page "https://github.com/windwp/nvim-autopairs")
     (synopsis "An autopairs plugin for Neovim")
     (description "A super powerful autopairs plugin for Neovim supporting multiple characters.")
     (license license:expat))))

(define-public neovim-autosave
  (let ((commit "3d342d6fcebeede15b6511b13a38a522c6f33bf8")
        (revision "0"))
    (package
     (name "neovim-autosave")
     (version (git-version "0.0.0" revision commit))
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/Pocco81/AutoSave.nvim")
             (commit commit)))
       (sha256
        (base32 "0wkr350z4ihrc1s3hfgmxcrxdp4bb7c9zg6iv036i11zvsfiil6n"))))
     (build-system copy-build-system)
     (arguments
      `(#:install-plan
        '(("doc" "share/nvim/site/pack/guix/start/autosave/")
          ("lua" "share/nvim/site/pack/guix/start/autosave/")
          ("plugin" "share/nvim/site/pack/guix/start/autosave/"))))
     (home-page "https://github.com/Pocco81/AutoSave.nvim")
     (synopsis "A Neovim plugin for automatically saving your work")
     (description "A Neovim plugin for saving your work before the world collapses or you type
@code{:qa!}.")
     (license license:gpl3))))

(define-public vim-paredit-for-neovim
  (package/inherit vim-paredit
    (name "vim-paredit-for-neovim")
    (arguments
     `(#:install-plan
       '(("doc" "share/nvim/site/pack/guix/start/paredit/")
         ("plugin" "share/nvim/site/pack/guix/start/paredit/"))))))

(define-public vim-sexp
  (let ((commit "14464d4580af43424ed8f2614d94e62bfa40bb4d")
        (revision "0"))
    (package
      (name "vim-sexp")
      (version (git-version "0.0.0" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://github.com/guns/vim-sexp")
                 (commit commit)))
          (sha256
            (base32 "139krxpjhbyypbl6v2jik1rms2fxl3dkqrl4rb7sms6c3p5764qx"))))
      (build-system copy-build-system)
      (arguments
        (list #:install-plan
              '(("autoload" "share/vim/vimfiles/")
                ("doc" "share/vim/vimfiles/")
                ("plugin" "share/vim/vimfiles/"))))
      (home-page "https://github.com/guns/vim-sexp")
      (synopsis "Precision editing for s-expressions in Vim")
      (description
       "This Vim plugin provides Paredit-like facilities for editing
Lisp s-expressions.")
      (license license:expat))))

(define-public vim-sexp-for-neovim
  (package/inherit vim-sexp
    (name "vim-sexp-for-neovim")
    (arguments
     `(#:install-plan
       '(("autoload" "share/nvim/site/pack/guix/start/sexp/")
         ("doc" "share/nvim/site/pack/guix/start/sexp/")
         ("plugin" "share/nvim/site/pack/guix/start/sexp/"))))))

(define-public vim-visualstar
  (package
    (name "vim-visualstar")
    (version "0.5.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/thinca/vim-visualstar.git")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0pf3hmghwg705c2sw81c3lxqzcbc2nmlgg3l6sn2hl8sm6b9r9ms"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("doc" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/"))))
    (home-page "https://github.com/thinca/vim-visualstar")
    (synopsis "Star feature for Visual-mode")
    (description "@code{vim-visualstar} is a Vim plugin to provide a star
feature for Visual-mode.  In other words, you can search your selection text in
Visual-mode.")
    (license license:zlib)))

(define-public vim-gruvoff
  (let ((commit "66ad889bc044f187fcb1a483979400e168a33eb5")
        (revision "0"))
    (package
      (name "vim-gruvoff")
      (version (git-version "0.0.0" revision commit))
      (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://git.sr.ht/~unwox/vim-gruvoff")
               (commit commit)))
        (file-name (git-file-name name version))
        (sha256
          (base32 "01qhm1xk5hbgzl061lyfpz5b92cp1zm0dhmi4v8rg46ljgnml1w9"))))
      (build-system copy-build-system)
      (arguments
      '(#:install-plan
        '(("colors" "share/vim/vimfiles/"))))
      (home-page "https://git.sr.ht/~unwox/vim-gruvoff")
      (synopsis "Gruvbox-inspired theme with most colors off")
      (description "Vim theme with most of syntax highlighting turned off.  Only
coloring present is diffs and greyed-out comments.")
      (license license:gpl3))))

(define-public vim-commentary
  (package
    (name "vim-commentary")
    (version "1.3")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/tpope/vim-commentary.git")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "02zm2pacnjpn2v2ax4r7pzn672dr2na7sb6hf94kk8fczcx06q56"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("plugin" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/"))))
    (home-page "https://github.com/tpope/vim-commentary")
    (synopsis "Commenting plugin for Vim")
    (description "Minimalistic plugin for commenting/uncommenting code in Vim.")
    (license license:vim)))

(define-public vim-abolish
  (package
    (name "vim-abolish")
    (version "1.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/tpope/vim-abolish.git")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "09i0y1ck8jkaq7cha4qdiwj0k76aqnvyz6i2in90vf3zsc0nlp7q"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("plugin" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/"))))
    (home-page "https://github.com/tpope/vim-abolish")
    (synopsis "Advanced text manipulation plugin for Vim")
    (description "@code{vim-abolish} contains various helpers for text
abbreviation, substitution and coercion.")
    (license license:vim)))

(define-public vim-minisnip
  (let ((commit "1897727298c658dde9ec9deda0e56b608c8b2f32")
        (revision "0"))
    (package
      (name "vim-minisnip")
      (version (git-version "0.0.0" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://github.com/joereynolds/vim-minisnip.git")
                 (commit commit)))
          (file-name (git-file-name name version))
          (sha256
            (base32 "1mg6j5z7f8ny8i1rgyfz8mnmariwylybp01a6k46jspqvcwnr7wh"))))
      (build-system copy-build-system)
      (arguments
      '(#:install-plan
        '(("autoload" "share/vim/vimfiles/")
          ("syntax" "share/vim/vimfiles/")
          ("ftdetect" "share/vim/vimfiles/")
          ("plugin" "share/vim/vimfiles/")
          ("doc" "share/vim/vimfiles/"))))
      (home-page "https://github.com/joereynolds/vim-minisnip")
      (synopsis "Snippet plugin for Vim")
      (description "@code{vim-minisnip} allows you to quickly insert
\"templates\" into files.  Among all the other snippet plugins out there, the
primary goal of @code{minisnip} is to be as minimal and lightweight as
possible.")
      (license license:expat))))

(define-public vim-ale
  (package
    (name "vim-ale")
    (version "3.2.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
              (url "https://github.com/dense-analysis/ale.git")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1bkmhqj9hadv9i2zqsnykc7pmql1fxvdd25417g7hxb9ld9n89ca"))))
    (build-system copy-build-system)
    (arguments
     '(#:install-plan
       '(("ale_linters" "share/vim/vimfiles/")
         ("autoload" "share/vim/vimfiles/")
         ("doc" "share/vim/vimfiles/")
         ("ftplugin" "share/vim/vimfiles/")
         ("plugin" "share/vim/vimfiles/")
         ("rplugin" "share/vim/vimfiles/")
         ("syntax" "share/vim/vimfiles/"))))
    (home-page "https://github.com/dense-analysis/ale")
    (synopsis "Asynchronous linting plugin for Vim")
    (description "ALE (Asynchronous Lint Engine) is a plugin providing linting
(syntax checking and semantic errors) in NeoVim 0.2.0+ and Vim 8 while you edit
your text files, and acts as a Vim Language Server Protocol client.")
    (license license:bsd-2)))
